package edu.nf.ch11.config;

import edu.nf.ch11.dao.UserDao;
import edu.nf.ch11.service.UserService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author wangl
 * @date 2025/4/30
 * 配置类的Lite模式（非代理模式）和Full模式（代理模式）
 * 但个配置类上标注了@Configuration注解时，并且
 * proxyBeanMethods属性设置为true时，这个就是Full模式
 * （spring会为当前的配置类创建代理，
 * 代理配置类中所有使用@Bean注解标注的方法），否则就是Lite模式。
 *
 * 代理配置类后，当在配置中调用某个@Bean注解修饰的方法时，代理对象会
 * 从容器中去查找相应的Bean
 */
@Configuration(proxyBeanMethods = true)
public class AppConfig {

    @Bean
    public UserDao userDao() {
        return new UserDao();
    }

    @Bean
    public UserService userService() {
        return new UserService(userDao());

       /* UserDao userDao = userDao();
        System.out.println(userDao);
        UserDao userDao2 = userDao();
        System.out.println(userDao2);
        return new UserService(userDao);*/
    }

}